package com.server.Example;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 * ok
 * The type Users example.
 */
public class UsersExample {
    /**
     * The Order by clause.
     */
    protected String orderByClause;

    /**
     * The Distinct.
     */
    protected boolean distinct;

    /**
     * The Ored criteria.
     */
    protected List<Criteria> oredCriteria;

    /**
     * Instantiates a new Users example.
     */
    public UsersExample() {
        oredCriteria = new ArrayList<>();
    }

    /**
     * Sets order by clause.
     *
     * @param orderByClause the order by clause
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    /**
     * Gets order by clause.
     *
     * @return the order by clause
     */
    public String getOrderByClause() {
        return orderByClause;
    }

    /**
     * Sets distinct.
     *
     * @param distinct the distinct
     */
    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    /**
     * Is distinct boolean.
     *
     * @return the boolean
     */
    public boolean isDistinct() {
        return distinct;
    }

    /**
     * Gets ored criteria.
     *
     * @return the ored criteria
     */
    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    /**
     * Or.
     *
     * @param criteria the criteria
     */
    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    /**
     * Or criteria.
     *
     * @return the criteria
     */
    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    /**
     * Create criteria criteria.
     *
     * @return the criteria
     */
    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    /**
     * Create criteria internal criteria.
     *
     * @return the criteria
     */
    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    /**
     * Clear.
     */
    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    /**
     * The type Generated criteria.
     */
    protected abstract static class GeneratedCriteria {
        /**
         * The Criteria.
         */
        protected List<Criterion> criteria;

        /**
         * Instantiates a new Generated criteria.
         */
        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        /**
         * Is valid boolean.
         *
         * @return the boolean
         */
        public boolean isValid() {
            return criteria.size() > 0;
        }

        /**
         * Gets all criteria.
         *
         * @return the all criteria
         */
        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        /**
         * Gets criteria.
         *
         * @return the criteria
         */
        public List<Criterion> getCriteria() {
            return criteria;
        }

        /**
         * Add criterion.
         *
         * @param condition the condition
         */
        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        /**
         * Add criterion.
         *
         * @param condition the condition
         * @param value     the value
         * @param property  the property
         */
        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        /**
         * Add criterion.
         *
         * @param condition the condition
         * @param value1    the value 1
         * @param value2    the value 2
         * @param property  the property
         */
        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        /**
         * Add criterion for jdbc date.
         *
         * @param condition the condition
         * @param value     the value
         * @param property  the property
         */
        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        /**
         * Add criterion for jdbc date.
         *
         * @param condition the condition
         * @param values    the values
         * @param property  the property
         */
        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        /**
         * Add criterion for jdbc date.
         *
         * @param condition the condition
         * @param value1    the value 1
         * @param value2    the value 2
         * @param property  the property
         */
        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        /**
         * And user id is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserIdIsNull() {
            addCriterion("User_id is null");
            return (Criteria) this;
        }

        /**
         * And user id is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserIdIsNotNull() {
            addCriterion("User_id is not null");
            return (Criteria) this;
        }

        /**
         * And user id equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdEqualTo(Integer value) {
            addCriterion("User_id =", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdNotEqualTo(Integer value) {
            addCriterion("User_id <>", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdGreaterThan(Integer value) {
            addCriterion("User_id >", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("User_id >=", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdLessThan(Integer value) {
            addCriterion("User_id <", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("User_id <=", value, "userId");
            return (Criteria) this;
        }

        /**
         * And user id in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserIdIn(List<Integer> values) {
            addCriterion("User_id in", values, "userId");
            return (Criteria) this;
        }

        /**
         * And user id not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserIdNotIn(List<Integer> values) {
            addCriterion("User_id not in", values, "userId");
            return (Criteria) this;
        }

        /**
         * And user id between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserIdBetween(Integer value1, Integer value2) {
            addCriterion("User_id between", value1, value2, "userId");
            return (Criteria) this;
        }

        /**
         * And user id not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("User_id not between", value1, value2, "userId");
            return (Criteria) this;
        }

        /**
         * And user name is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserNameIsNull() {
            addCriterion("User_name is null");
            return (Criteria) this;
        }

        /**
         * And user name is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserNameIsNotNull() {
            addCriterion("User_name is not null");
            return (Criteria) this;
        }

        /**
         * And user name equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameEqualTo(String value) {
            addCriterion("User_name =", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameNotEqualTo(String value) {
            addCriterion("User_name <>", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameGreaterThan(String value) {
            addCriterion("User_name >", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameGreaterThanOrEqualTo(String value) {
            addCriterion("User_name >=", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameLessThan(String value) {
            addCriterion("User_name <", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameLessThanOrEqualTo(String value) {
            addCriterion("User_name <=", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameLike(String value) {
            addCriterion("User_name like", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name not like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserNameNotLike(String value) {
            addCriterion("User_name not like", value, "userName");
            return (Criteria) this;
        }

        /**
         * And user name in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserNameIn(List<String> values) {
            addCriterion("User_name in", values, "userName");
            return (Criteria) this;
        }

        /**
         * And user name not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserNameNotIn(List<String> values) {
            addCriterion("User_name not in", values, "userName");
            return (Criteria) this;
        }

        /**
         * And user name between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserNameBetween(String value1, String value2) {
            addCriterion("User_name between", value1, value2, "userName");
            return (Criteria) this;
        }

        /**
         * And user name not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserNameNotBetween(String value1, String value2) {
            addCriterion("User_name not between", value1, value2, "userName");
            return (Criteria) this;
        }

        /**
         * And user password is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserPasswordIsNull() {
            addCriterion("User_password is null");
            return (Criteria) this;
        }

        /**
         * And user password is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserPasswordIsNotNull() {
            addCriterion("User_password is not null");
            return (Criteria) this;
        }

        /**
         * And user password equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordEqualTo(String value) {
            addCriterion("User_password =", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordNotEqualTo(String value) {
            addCriterion("User_password <>", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordGreaterThan(String value) {
            addCriterion("User_password >", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordGreaterThanOrEqualTo(String value) {
            addCriterion("User_password >=", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordLessThan(String value) {
            addCriterion("User_password <", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordLessThanOrEqualTo(String value) {
            addCriterion("User_password <=", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordLike(String value) {
            addCriterion("User_password like", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password not like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserPasswordNotLike(String value) {
            addCriterion("User_password not like", value, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserPasswordIn(List<String> values) {
            addCriterion("User_password in", values, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserPasswordNotIn(List<String> values) {
            addCriterion("User_password not in", values, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserPasswordBetween(String value1, String value2) {
            addCriterion("User_password between", value1, value2, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user password not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserPasswordNotBetween(String value1, String value2) {
            addCriterion("User_password not between", value1, value2, "userPassword");
            return (Criteria) this;
        }

        /**
         * And user secondname is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserSecondnameIsNull() {
            addCriterion("User_secondName is null");
            return (Criteria) this;
        }

        /**
         * And user secondname is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserSecondnameIsNotNull() {
            addCriterion("User_secondName is not null");
            return (Criteria) this;
        }

        /**
         * And user secondname equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameEqualTo(String value) {
            addCriterion("User_secondName =", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameNotEqualTo(String value) {
            addCriterion("User_secondName <>", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameGreaterThan(String value) {
            addCriterion("User_secondName >", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameGreaterThanOrEqualTo(String value) {
            addCriterion("User_secondName >=", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameLessThan(String value) {
            addCriterion("User_secondName <", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameLessThanOrEqualTo(String value) {
            addCriterion("User_secondName <=", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameLike(String value) {
            addCriterion("User_secondName like", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname not like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSecondnameNotLike(String value) {
            addCriterion("User_secondName not like", value, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserSecondnameIn(List<String> values) {
            addCriterion("User_secondName in", values, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserSecondnameNotIn(List<String> values) {
            addCriterion("User_secondName not in", values, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserSecondnameBetween(String value1, String value2) {
            addCriterion("User_secondName between", value1, value2, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user secondname not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserSecondnameNotBetween(String value1, String value2) {
            addCriterion("User_secondName not between", value1, value2, "userSecondname");
            return (Criteria) this;
        }

        /**
         * And user sex is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserSexIsNull() {
            addCriterion("User_sex is null");
            return (Criteria) this;
        }

        /**
         * And user sex is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserSexIsNotNull() {
            addCriterion("User_sex is not null");
            return (Criteria) this;
        }

        /**
         * And user sex equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexEqualTo(String value) {
            addCriterion("User_sex =", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexNotEqualTo(String value) {
            addCriterion("User_sex <>", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexGreaterThan(String value) {
            addCriterion("User_sex >", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexGreaterThanOrEqualTo(String value) {
            addCriterion("User_sex >=", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexLessThan(String value) {
            addCriterion("User_sex <", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexLessThanOrEqualTo(String value) {
            addCriterion("User_sex <=", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexLike(String value) {
            addCriterion("User_sex like", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex not like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserSexNotLike(String value) {
            addCriterion("User_sex not like", value, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserSexIn(List<String> values) {
            addCriterion("User_sex in", values, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserSexNotIn(List<String> values) {
            addCriterion("User_sex not in", values, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserSexBetween(String value1, String value2) {
            addCriterion("User_sex between", value1, value2, "userSex");
            return (Criteria) this;
        }

        /**
         * And user sex not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserSexNotBetween(String value1, String value2) {
            addCriterion("User_sex not between", value1, value2, "userSex");
            return (Criteria) this;
        }

        /**
         * And user birth is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserBirthIsNull() {
            addCriterion("User_birth is null");
            return (Criteria) this;
        }

        /**
         * And user birth is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserBirthIsNotNull() {
            addCriterion("User_birth is not null");
            return (Criteria) this;
        }

        /**
         * And user birth equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthEqualTo(Date value) {
            addCriterionForJDBCDate("User_birth =", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthNotEqualTo(Date value) {
            addCriterionForJDBCDate("User_birth <>", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthGreaterThan(Date value) {
            addCriterionForJDBCDate("User_birth >", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("User_birth >=", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthLessThan(Date value) {
            addCriterionForJDBCDate("User_birth <", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBirthLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("User_birth <=", value, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserBirthIn(List<Date> values) {
            addCriterionForJDBCDate("User_birth in", values, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserBirthNotIn(List<Date> values) {
            addCriterionForJDBCDate("User_birth not in", values, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserBirthBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("User_birth between", value1, value2, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user birth not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserBirthNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("User_birth not between", value1, value2, "userBirth");
            return (Criteria) this;
        }

        /**
         * And user military card is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserMilitaryCardIsNull() {
            addCriterion("User_Military_card is null");
            return (Criteria) this;
        }

        /**
         * And user military card is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserMilitaryCardIsNotNull() {
            addCriterion("User_Military_card is not null");
            return (Criteria) this;
        }

        /**
         * And user military card equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardEqualTo(String value) {
            addCriterion("User_Military_card =", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardNotEqualTo(String value) {
            addCriterion("User_Military_card <>", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardGreaterThan(String value) {
            addCriterion("User_Military_card >", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardGreaterThanOrEqualTo(String value) {
            addCriterion("User_Military_card >=", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardLessThan(String value) {
            addCriterion("User_Military_card <", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardLessThanOrEqualTo(String value) {
            addCriterion("User_Military_card <=", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardLike(String value) {
            addCriterion("User_Military_card like", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card not like criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserMilitaryCardNotLike(String value) {
            addCriterion("User_Military_card not like", value, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserMilitaryCardIn(List<String> values) {
            addCriterion("User_Military_card in", values, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserMilitaryCardNotIn(List<String> values) {
            addCriterion("User_Military_card not in", values, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserMilitaryCardBetween(String value1, String value2) {
            addCriterion("User_Military_card between", value1, value2, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user military card not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserMilitaryCardNotBetween(String value1, String value2) {
            addCriterion("User_Military_card not between", value1, value2, "userMilitaryCard");
            return (Criteria) this;
        }

        /**
         * And user active is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserActiveIsNull() {
            addCriterion("user_active is null");
            return (Criteria) this;
        }

        /**
         * And user active is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserActiveIsNotNull() {
            addCriterion("user_active is not null");
            return (Criteria) this;
        }

        /**
         * And user active equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveEqualTo(Boolean value) {
            addCriterion("user_active =", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveNotEqualTo(Boolean value) {
            addCriterion("user_active <>", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveGreaterThan(Boolean value) {
            addCriterion("user_active >", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveGreaterThanOrEqualTo(Boolean value) {
            addCriterion("user_active >=", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveLessThan(Boolean value) {
            addCriterion("user_active <", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserActiveLessThanOrEqualTo(Boolean value) {
            addCriterion("user_active <=", value, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserActiveIn(List<Boolean> values) {
            addCriterion("user_active in", values, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserActiveNotIn(List<Boolean> values) {
            addCriterion("user_active not in", values, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserActiveBetween(Boolean value1, Boolean value2) {
            addCriterion("user_active between", value1, value2, "userActive");
            return (Criteria) this;
        }

        /**
         * And user active not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserActiveNotBetween(Boolean value1, Boolean value2) {
            addCriterion("user_active not between", value1, value2, "userActive");
            return (Criteria) this;
        }

        /**
         * And users create is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUsersCreateIsNull() {
            addCriterion("Users_create is null");
            return (Criteria) this;
        }

        /**
         * And users create is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUsersCreateIsNotNull() {
            addCriterion("Users_create is not null");
            return (Criteria) this;
        }

        /**
         * And users create equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateEqualTo(Date value) {
            addCriterion("Users_create =", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateNotEqualTo(Date value) {
            addCriterion("Users_create <>", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateGreaterThan(Date value) {
            addCriterion("Users_create >", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateGreaterThanOrEqualTo(Date value) {
            addCriterion("Users_create >=", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateLessThan(Date value) {
            addCriterion("Users_create <", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUsersCreateLessThanOrEqualTo(Date value) {
            addCriterion("Users_create <=", value, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUsersCreateIn(List<Date> values) {
            addCriterion("Users_create in", values, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUsersCreateNotIn(List<Date> values) {
            addCriterion("Users_create not in", values, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUsersCreateBetween(Date value1, Date value2) {
            addCriterion("Users_create between", value1, value2, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And users create not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUsersCreateNotBetween(Date value1, Date value2) {
            addCriterion("Users_create not between", value1, value2, "usersCreate");
            return (Criteria) this;
        }

        /**
         * And user balance is null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserBalanceIsNull() {
            addCriterion("User_balance is null");
            return (Criteria) this;
        }

        /**
         * And user balance is not null criteria.
         *
         * @return the criteria
         */
        public Criteria andUserBalanceIsNotNull() {
            addCriterion("User_balance is not null");
            return (Criteria) this;
        }

        /**
         * And user balance equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceEqualTo(BigDecimal value) {
            addCriterion("User_balance =", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance not equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceNotEqualTo(BigDecimal value) {
            addCriterion("User_balance <>", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance greater than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceGreaterThan(BigDecimal value) {
            addCriterion("User_balance >", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance greater than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("User_balance >=", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance less than criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceLessThan(BigDecimal value) {
            addCriterion("User_balance <", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance less than or equal to criteria.
         *
         * @param value the value
         * @return the criteria
         */
        public Criteria andUserBalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("User_balance <=", value, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserBalanceIn(List<BigDecimal> values) {
            addCriterion("User_balance in", values, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance not in criteria.
         *
         * @param values the values
         * @return the criteria
         */
        public Criteria andUserBalanceNotIn(List<BigDecimal> values) {
            addCriterion("User_balance not in", values, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserBalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("User_balance between", value1, value2, "userBalance");
            return (Criteria) this;
        }

        /**
         * And user balance not between criteria.
         *
         * @param value1 the value 1
         * @param value2 the value 2
         * @return the criteria
         */
        public Criteria andUserBalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("User_balance not between", value1, value2, "userBalance");
            return (Criteria) this;
        }
    }

    /**
     * The type Criteria.
     */
    public static class Criteria extends GeneratedCriteria {
        /**
         * Instantiates a new Criteria.
         */
        protected Criteria() {
            super();
        }
    }

    /**
     * The type Criterion.
     */
    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        /**
         * Gets condition.
         *
         * @return the condition
         */
        public String getCondition() {
            return condition;
        }

        /**
         * Gets value.
         *
         * @return the value
         */
        public Object getValue() {
            return value;
        }

        /**
         * Gets second value.
         *
         * @return the second value
         */
        public Object getSecondValue() {
            return secondValue;
        }

        /**
         * Is no value boolean.
         *
         * @return the boolean
         */
        public boolean isNoValue() {
            return noValue;
        }

        /**
         * Is single value boolean.
         *
         * @return the boolean
         */
        public boolean isSingleValue() {
            return singleValue;
        }

        /**
         * Is between value boolean.
         *
         * @return the boolean
         */
        public boolean isBetweenValue() {
            return betweenValue;
        }

        /**
         * Is list value boolean.
         *
         * @return the boolean
         */
        public boolean isListValue() {
            return listValue;
        }

        /**
         * Gets type handler.
         *
         * @return the type handler
         */
        public String getTypeHandler() {
            return typeHandler;
        }

        /**
         * Instantiates a new Criterion.
         *
         * @param condition the condition
         */
        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        /**
         * Instantiates a new Criterion.
         *
         * @param condition   the condition
         * @param value       the value
         * @param typeHandler the type handler
         */
        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        /**
         * Instantiates a new Criterion.
         *
         * @param condition the condition
         * @param value     the value
         */
        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        /**
         * Instantiates a new Criterion.
         *
         * @param condition   the condition
         * @param value       the value
         * @param secondValue the second value
         * @param typeHandler the type handler
         */
        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        /**
         * Instantiates a new Criterion.
         *
         * @param condition   the condition
         * @param value       the value
         * @param secondValue the second value
         */
        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}